package file.it.d3_charset;

import java.io.UnsupportedEncodingException;
import java.util.Arrays;

/**
 * 目标：掌握如何使用java代码完成对字符串的编码和解码
 * ASCII码： 只有英文、数字、符号等、占一个字节
 * GBK字符集：汉字占2个字节，英文、数字占1字节
 * UTF-8字符集：汉字占3个字节、英文、数字占一字节
 * 汉字的字节码是1开头，数字和英文的字节码是0开头
 */
public class Test {
    public static void main(String[] args) throws UnsupportedEncodingException {
        // 1.解码
        String data = "a我b";
        byte[] bytes = data.getBytes(); // 默认是按照平台字符集(UTF-8)进行编码的
        System.out.println(Arrays.toString(bytes));

        // 按照指定字符集进行编码
        byte[] bytes1 = data.getBytes("GBK");
        System.out.println(Arrays.toString(bytes1));

        // 2.解码
        String s1 = new String(bytes); // 按照平台默认编码(UTF-8)解码
        System.out.println(s1);

        String s2 = new String(bytes1); // 按照平台默认编码(UTF-8)解码
        System.out.println(s2); // a��b 编码用什么字符集解码就需要用什么字符集，否则会出现乱码现象

        String s3 = new String(bytes1, "GBK"); // 通过指定字符集解码
        System.out.println(s3);
    }
}
